import tkinter as tk
from tkinter import ttk


def create_scrollable_treeview():
    root = tk.Tk()
    root.title("带滚动条的树状视图示例")
    # 建议设置窗口初始大小，避免过小
    root.geometry("600x500")

    # 1. 树状视图相关代码（原代码保留，仅修正缩进）
    frame = ttk.Frame(root)
    frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

    h_scrollbar = ttk.Scrollbar(frame, orient=tk.HORIZONTAL)
    h_scrollbar.pack(side=tk.BOTTOM, fill=tk.X)

    v_scrollbar = ttk.Scrollbar(frame, orient=tk.VERTICAL)
    v_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

    tree = ttk.Treeview(
        frame,
        xscrollcommand=h_scrollbar.set,
        yscrollcommand=v_scrollbar.set,
        columns=("col1", "col2", "col3", "col4"),
        show="headings"
    )

    # 修正列标题循环（原代码只设置了3列，这里补全4列）
    for i in range(4):
        tree.heading(f"col{i+1}", text=f"列{i+1}")

    for col in ("col1", "col2", "col3", "col4"):
        tree.column(col, width=200, anchor=tk.CENTER)

    for i in range(50):
        tree.insert("", tk.END, values=(f"数据 {i}-1", f"数据 {i}-2", f"数据 {i}-3", f"数据 {i}-4"))

    tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
    h_scrollbar.config(command=tree.xview)
    v_scrollbar.config(command=tree.yview)

    # 2. 修正 Label 显示问题（两种方式任选其一）
    text_frame = tk.Frame(root)
    # 用 pack 的 fill=BOTH + expand=True 让 frame 占满剩余空间
    text_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

    # 方式1：简单文本（推荐，适合固定内容）
    text1 = ttk.Label(text_frame, text="56456456")  # 用 text 参数传字符串
    text1.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

    # 方式2：动态文本（适合后续要修改文本的场景）
    # 创建 StringVar 变量并赋值
    dynamic_text = tk.StringVar()
    dynamic_text.set("这是动态文本：56456456")
    # 绑定 textvariable 到变量
    text2 = ttk.Label(text_frame, textvariable=dynamic_text)
    text2.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
    text2 = ttk.Label(text_frame, text='dynamic_text',state="disabled")

    text2.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)

    root.mainloop()


if __name__ == "__main__":
    create_scrollable_treeview()